home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / www / ludzie / txf / progs / savenames.lha / SaveNames1.5 / SaveNames.man < prev    next >
Text File  |  1996-12-12  |  19KB  |  352 lines

  1.  
  2.  
  3.  NNNNAAAAMMMMEEEE  -  SaveNames 1.4
  4.  
  5.  
  6.  _C_o_p_y_r_i_g_h_t_ _(_w_h_y_ _n_o_t_._._._)
  7.  
  8.  SSSSaaaavvvveeeeNNNNaaaammmmeeeessss    vvvv1111....1444 software and documentation are copyrighted © 1995-1996 by
  9.  MMMMaaaarrrrcccciiiinnnn    OOOOrrrrlllloooowwwwsssskkkkiiii. All Rights Reserved.
  10.  
  11.  Update to vvvv1111....4444 is made by TTTTaaaaddddeeeekkkk    KKKKnnnnaaaappppiiiikkkk. Thanks.
  12.  
  13.  
  14.  _D_i_s_t_r_i_b_u_t_i_o_n_ _(_p_i_r_a_t_e_ _o_r_ _d_i_e_!_)
  15.  
  16.  Freely distributable in complete archive with following files included:
  17.  
  18.  SaveNames.c         - source code
  19.  SaveNames.c.info    - source icon
  20.  SaveNames.doc       - this documentation
  21.  SaveNames.doc.info  - documentation icon
  22.  SaveNames.man       - this documentation in UNIX's man format
  23.  SaveNames           - AAAAmmmmiiiiggggaaaa executable
  24.  SaveNames.info      - AAAAmmmmiiiiggggaaaa executable icon
  25.  SD!.displayme       - our BBS info
  26.  
  27.  
  28.  _D_i_s_c_l_a_i_m_e_r_ _(_a_s_ _a_l_w_a_y_s_ _:_)
  29.  
  30.  No responsibility or liability will be accepted for any damage that
  31.  may appear to have resulted from use of this program. All use is at
  32.  your own risk. The software is provided "as is" without any warranty
  33.  implied or otherwise to the fitness or accuracy of the software and
  34.  documentation. The author reserves the right to update the software
  35.  and/or documentation without notice.
  36.  
  37.  
  38.  _U_s_a_g_e_ _(_w_h_a_t_ _i_s_ _i_t_!_?_)
  39.  
  40.  Some people (like me) are forced to use pee-cee machines to transfer
  41.  files from internet to my AAAAmmmmiiiiggggaaaa (it doesn't mean I've bought a pc
  42.  for my own! I use (big word:) it only at my technical university).
  43.  As you all know, no one needs more chars to name his files than 8.3,
  44.  which seems to be a 'professional filename format'. Any other, longer
  45.  names are obsolete and should be forbidden. Unfortunately both AAAAmmmmiiiiggggaaaa
  46.  and Unix based machines use longer names for their files, so
  47.  transfering files between those platforms via pc causes 90% of name
  48.  (mainly dots :) to be eaten by pc. So I decided to cure this.
  49.  SaveNames is the medicine against. What does it do? Lets say, you want
  50.  to transfer some files stored in directory _M_y_F_i_l_e_s on your Unix
  51.  account to AAAAmmmmiiiiggggaaaa via pc floppies. Files use 'obsolete' names:
  52.  
  53.                      kickstart
  54.                      KICKdisk.info
  55.                      kickstart.info
  56.  
  57.  So before you start to copy them to disk type:
  58.  
  59.                      SSSSaaaavvvveeeeNNNNaaaammmmeeeessss    CCCC    MMMMyyyyFFFFiiiilllleeeessss
  60.  
  61.  and names of all files in this directory are converted (CCCC means
  62.  CCCCOOOODDDDEEEE and may be lowercase or mixedcase) to less than 8 chars (suffix
  63.  PPPPCCCCPPPP (pc protection :) will also be added to allow you easily detect
  64.  those files, or automate decoding e.g. via _D_O_p_u_s_ _F_i_l_e_C_l_a_s_s. If you use
  65.  _D_O_p_u_s set class checking to: MMMMAAAATTTTCCCCHHHHNNNNAAAAMMMMEEEE    WWWWFFFFMMMMHHHHFFFFiiiilllleeee....iiiiddddxxxx    OOOORRRR    MMMMAAAATTTTCCCCHHHHNNNNAAAAMMMMEEEE    ####????....ppppccccpppp
  66.  and operation to ((((AAAAmmmmiiiiggggaaaaDDDDoooossss)))) SSSSaaaavvvveeeeNNNNaaaammmmeeeessss    DDDD    {{{{ssss}}}} and you will decode files
  67.  by doubleclick.). Phew, you said? No big deal? pc does it itself! Bet it
  68.  doesn't. If you look in your MMMMyyyyFFFFiiiilllleeeessss drawer you'll find the new file
  69.  named WWWWFFFFMMMMHHHHFFFFiiiilllleeee....iiiiddddxxxx looking like that:
  70.  
  71.                      7204094 kickstart
  72.                      720704c KICKdisk.info
  73.                      72085c4 kickstart.info
  74.  
  75.  Got it? Yes! Those data are used to restore filenames after whole
  76.  transfer on destination machine. How to do this? Copy transfered files
  77.  from pc disks to one directory on your Amiga disk (e.g. MMMMyyyyFFFFiiiilllleeeessssTTTToooooooo)
  78.  and type:
  79.  
  80.                      SSSSaaaavvvveeeeNNNNaaaammmmeeeessss    DDDD    MMMMyyyyFFFFiiiilllleeeessssTTTToooooooo
  81.  
  82.  This time command DDDD means DDDDeeeeccccooooddddeeee. Program opens file index
  83.  described below and renames all known (stored in index) files back
  84.  to theirs original names. Simple? Yes, it is. And it works too!
  85.  
  86.  NNNNOOOOTTTTEEEE:::: Command DDDD has special, expanded mode, activating by ----
  87.  as command prefix: ----DDDD. See _T_e_c_h_n_i_c_a_l_ _I_n_f_o chapter to find
  88.  out what this feature is for.
  89.  
  90.  While names coding SSSSaaaavvvveeeeNNNNaaaammmmeeeessss shows you estimated number of disks
  91.  you will need to store all your crypted files on. If you want
  92.  do this calculation without main code process use ----CCCC command
  93.  instead of CCCC.
  94.  
  95.  Since version 1111....4444 SSSSaaaavvvveeeeNNNNaaaammmmeeeessss has ability to sssspppplllliiiitttt large files into smaller
  96.  pieces. For what? Imagine you have just downloaded Aminet Index (as I had).
  97.  It's big, isn't it? Of course I compressed it, but it was still more KBytes
  98.  than PC DD diskette (however it would fit on AAAAmmmmiiiiggggaaaa DD harmless :-).
  99.  SSSSaaaavvvveeeeNNNNaaaammmmeeeessss can help you manage it. Just type:
  100.  
  101.                      SSSSaaaavvvveeeeNNNNaaaammmmeeeessss    CCCC    MMMMyyyyFFFFiiiilllleeeessss    SSSSpppplllliiiittttSSSSiiiizzzzeeee
  102.  
  103.  which means you want files larger than SSSSpppplllliiiittttSSSSiiiizzzzeeee bytes to be parted
  104.  into smaller pieces (with size defined as SSSSpppplllliiiittttSSSSiiiizzzeeee). In result you get:
  105.  
  106.                      78003582.pc0
  107.                      78003582.pc1
  108.                      78003582.pc3
  109.                      ............
  110.                      ............
  111.                      78003582.p74
  112.  
  113.  while WWWWFFFFMMMMHHHHFFFFiiiilllleeee....iiiiddddxxxx still holds only one entry with '78003582.pcp'.
  114.  Joining is done during DECODing automatically and fully transparently
  115.  whenever needed. No need for extra switches and keywords to be used.
  116.  
  117.  Thanks to this option you don't have to use another program for splitting.
  118.  SaveNames does everything, and does it in a convenient way, not leaving
  119.  you with partial files after rejoining, like some splitters (unless an
  120.  error occures, of course).
  121.  
  122.  Note: To split a file, you need spare space equal to size of splitting
  123.  file (obvious). To join it back it, you need spare space of equal to 
  124.  SplitSize you used while splitting. Be careful on low storage (disk full).
  125.  Splitting may take a while...
  126.  
  127.  You can use any SSSSpppplllliiiittttSSSSiiiizzzzeeee you want but SSSSaaaavvvveeeeNNNNaaaammmmeeeessss assumes you know what you
  128.  are doing so therefore it got no superb dumb filters built-in and is not
  129.  idiot-proof. Every file can be maximally splited into 999 due to pee-see
  130.  ?poor filename scheme. This should be enough for almost all cases (hey,
  131.  you're not downloading encyclopedia everyday, are you?). Instead
  132.  of typing 777722220000000000000000 or 1111444444440000000000000000 as SSSSpppplllliiiittttSSSSiiiizzzzeeee you can use DDDDDDDD or HHHHDDDD
  133.  equivalents (case insensitive).
  134.  
  135.  
  136.  _R_e_q_u_i_r_e_m_e_n_t_s
  137.  
  138.  Something with Intel outside, few bytes of free memory, files to eat,
  139.  2 busty babes and 1 big beer.
  140.  
  141.  
  142.  _T_e_c_h_n_i_c_a_l_ _i_n_f_o_ _(_s_o_u_n_d_s_ _s_o_o_o_o_ _w_i_s_e_._._._ _:_)
  143.  
  144.  Portability is base idea of this project, so SSSSaaaavvvveeeeNNNNaaaammmmeeeessss is written in
  145.  plain _A_N_S_I_ _C and may be simply compiled on any machine. If you find any
  146.  problems, let me know! And do not compile it on pc - it doesn't have any
  147.  sense... :)
  148.  
  149.  Unfortunately small changes, as always, have to be done before you run
  150.  the compiler, so look into the source, and select your platform (for
  151.  now AAAMMMMIIIIGGGGAAAA, UNIX (being honest IRIX) and LINUX is checked and supported.
  152.  If you port it to Mac world let me know and send changes to me (in this
  153.  case please do only small GUI). AAAAMMMMIIIIGGGGAAAA side was tested on my AAAA4444000000000000, UNIX
  154.  platform was tested on SILICON GRAPHICS' IRIS INDIGO and HP. LINUX side
  155.  was tested on... LINUX side :-)
  156.  
  157.  Name encoding is done in two passes. 1st pass - scanning directory
  158.  and building coded names, 2nd pass renaming files and writting
  159.  index file. It has to be done this way, because scanning directory
  160.  while it is changing, may (and in 99% it does) put the program in the
  161.  infinite loop. Sometimes we may also miss some files. Decoding is done
  162.  in one pass.
  163.  
  164.  Starting to decode, program tries to read index file first. First it
  165.  tries to open file named WWWWFFFFMMMMHHHHFFFFiiiilllleeee....iiiiddddxxxx. If file couldn't be found,
  166.  it tries to open file again, with name in lowercase and if it fails
  167.  to, the last try use uppercased name. This is important mainly for
  168.  Unix side, because Unix is casesensitive. So if you transferred
  169.  your files via pc, the names may be 'fixed' to lower or uppercase.
  170.  While decoding, program may do the same trick with files to decode,
  171.  but this feature is defaulty off, which means that only one try is
  172.  attemped, and filenames are supposed to be exactly the same as while
  173.  coding. Use ----DDDD instead of DDDD to turn this on.
  174.  
  175.  You may convert as many file names as you wish, because there's no
  176.  static arrays, but dynamicaly build list. You are only limited by your
  177.  memory. To code 1000 names you will need, on AAAAmmmmiiiiggggaaaa, about 266KB. Why
  178.  only 266KB? Because every name is stored in a list's entry containing
  179.  pointer to next entry (on 32bit machines it takes 4 bytes), converted
  180.  name (12 chars + trailing zero) and original file name. The size of last
  181.  entry depends on your system. In your system includes, you will find
  182.  definition of _M_A_X_N_A_M_E_L_E_N, which limits max length of filename. On AAAAmmmmiiiiggggaaaa
  183.  it's set to 255 chars. For now it's too much, because you cannot use names
  184.  longer than 30 chars (because there's no more free bytes on disk block).
  185.  So if you are RRRREEEEAAAALLLLLLLLYYYY out of memory, you may change this by hand (see
  186.  included source). Safe value is 108, because system structure
  187.  FileInfoBlock reserves exactly 108 bytes for filename. You may save then
  188.  few bytes. E.g. for those 1000 files mentioned above, with _M_A_X_N_A_M_E_L_E_N
  189.  set to 30 you will save 248KB, with _M_A_X_N_A_M_E_L_E_N set to 108, only :) 145
  190.  KB but think what are you doing! You probably never code more than 100
  191.  names in one session and you surely do not use A1000 with 256 KB RAM. So
  192.  better leave MAXNAMELEN alone...
  193.  
  194.  You may ask: How do you code filenames to those weird numbers, pal?
  195.  I answer: I do not code it at all! I'm just copying file's own INode
  196.  (it's kind of FileHandle on Unix machines). Because all filesystems
  197.  use almost the same algorithms, it also use INodes without any tricks
  198.  (maybe pc does it different, but who cares pc?). Sometimes it is
  199.  called INode, sometimes FileHandle and sometimes BlahBlahBlah, but
  200.  it always means the same - almost unique number belongs to file.
  201.  On Amiga side I could use GetUniqueID() from utility.library, but
  202.  it is available under OS3.0 and newer and, what is more important,
  203.  generates only 4294967295 unique numbers. That's all.
  204.  
  205.  
  206.  _B_u_g_s_ _(_e_e_p_._._._)
  207.  
  208.  Program doesn't recognize if name belongs to directory or to file and
  209.  treats all the same. For now, it also can't scan directories
  210.  recursively. Solution: do not create subdirs in drawer you want
  211.  SaveNames to process.
  212.  
  213.  There may appear some problems if you will have two files in the dir,
  214.  being in fact links to other file. In this case INode will be the
  215.  same. Solution: use proper file instead of its shadows.
  216.  
  217.  You must nnnnooootttt have file named WWWWFFFFMMMMHHHHFFFFiiiilllleeee....iiiiddddxxxx in your drawer, because
  218.  while encoding/decoding it's written/read sequentially. So while
  219.  encoding it may be overwriten (but not if it is 1st file
  220.  in directory :). While decoding it will be skipped, because of
  221.  already opened (being in use) file with the same name. Solution:
  222.  rename your file :)
  223.  
  224.  On Amiga side SaveNames doesn't work when called from WB. If I find some
  225.  spare time I maybe add this, but I am not quite sure it's really needed.
  226.  
  227.  If you have transferred this archive from Unix account to your
  228.  machine via pc, you have probably noticed that few letters have been
  229.  eaten.. You should use... SaveNames to avoid it! :)
  230.  
  231.  Some older compilers requires the function to be declared in old C&R
  232.  style (see the source if you don't know what it's about). If you are
  233.  own such a compiler, simply uncommet the OOOOLLLLDDDD____SSSSTTTTYYYYLLLLEEEE definition before
  234.  you start to compile the program.
  235.  
  236.  
  237.  _F_u_t_u_r_e_ _p_l_a_n_s_ _(_w_o_w_!_)
  238.  
  239.  If someone finds a reason to decode single files too, I will add this
  240.  feature on request, bacause it's easy to do... :)
  241.  
  242.  I also may add WB handling, but I don't think anybody needs this.
  243.  
  244.  Recursive directory scanning.
  245.  
  246.  
  247.  _H_i_s_t_o_r_y_ _(_w_h_a_t_ _h_a_s_ _h_a_p_p_e_n_ _t_o_ _t_h_e_ _S_h_e_r_l_o_c_k_ _H_o_l_m_e_s_ _i_n_ _t_h_e_ _p_a_s_t_)
  248.  
  249.   * v1.0  -  Initial release
  250.              Worldwide distribution
  251.              Begin of SaveNames-mania....
  252.  
  253.   * v1.1  -  WWWWAAAARRRRNNNNIIIINNNNGGGG: Internal format of the _W_F_M_H_F_i_l_e_._i_d_x
  254.              has been changed! Better decode all old stuff
  255.              before you install this release!
  256.  
  257.              _C_h_a_n_g_e_s_:
  258.  
  259.           -  LINUX and gcc differences and needs supported
  260.           -  Unnecessary %ld's replaced by %d's
  261.           -  SSSSaaaavvvveeeeNNNNaaaammmmeeeessss could not find the index file on Unix
  262.               side if its name was 'processed' by pc (see manual)
  263.  
  264.              Reported by _N_i_k_l_a_s_ _E_d_m_u_n_d_s_s_o_n
  265.  
  266.           -  Added old C&R function declaration for older compilers
  267.               (this feature is switchable and defaulty is off)
  268.           -  SaveNames will not remove WWWWFFFFMMMMHHHHFFFFiiiilllleeee....iiiiddddxxxx index file
  269.               if restoring was not 100% successed
  270.  
  271.              Suggested by _K_o_n_r_a_d_ _D_u_b_i_e_l.
  272.  
  273.   * v1.2  -  Expand decoding mode added (see 'Technical Info').
  274.           -  Solved problems with names contain spaces (this was
  275.               the main reason I've changed the index file format).
  276.           -  SaveNames can now calculate number of disks you will
  277.               need to store contents of your dir on floppies
  278.               (both for Amiga and pc disks) and number of bytes
  279.               left free on the last diskiette.
  280.           -  New command '-C' ('-COUNT') added, which scans given
  281.               directory and counts total length of files and
  282.               floppy disk usage (while coding, those information
  283.               will also be shown).
  284.           -  Source slightly rewritten.
  285.  
  286.   * v1.3  -  Small code improvements (it's now even more portable :-)
  287.           -  Enforcer hit removed
  288.  
  289.   * v1.4  -  File splitting added.
  290.           -  Bug fix: Now doesn't lock up if you already have
  291.               WFMHFile.idx in the dir and want to CODE something.
  292.           -  Now statistics shows total size in KB or MB only
  293.              when needed (no more 0 KB etc).
  294.  
  295.   * v1.5  -  If a size of given file was multipler of specified
  296.              splitsize, an error was reported and no entry was
  297.              added to WFMHFile.idx for this file. Fixed.
  298.           -  Function div() not used any more (helps under SunOS 4).
  299.           -  Amiga version string added.
  300.           -  SunOS 4 direct support.
  301.  
  302.  
  303.  
  304.  _A_u_t_h_o_r_ _(_i_t_'_s_ _m_e_,_ _i_t_'_s_ _m_e_)
  305.  
  306.  MMMMaaaarrrrcccciiiinnnn    OOOOrrrrlllloooowwwwsssskkkkiiii
  307.  ul. Radomska 38
  308.  71-002 Szczecin
  309.  Poland
  310.  
  311.  _E_-_M_a_i_l: carlos@dedal.man.szczecin.pl
  312.  _W_W_W: http://www.szczecin.pl/~carlos
  313.  
  314.  FidoNet:       Marcin Orlowski@2:481/22.2
  315.  GlobalNet:     Marcin Orlowski@52:4800/6
  316.  
  317.  
  318.  Responsible for SaveNames v1.4+ is:
  319.  
  320.     TTTTaaaaddddeeeekkkk    KKKKnnnnaaaappppiiiikkkk
  321.  ul. Duza Gora 35/88
  322.  30-857 Krakow
  323.  Poland
  324.  
  325.  _E_-_M_a_i_l: tadek@student.uci.agh.edu.pl
  326.  
  327.  Improving SSSSaaaavvvveeeeNNNNaaaammmmeeeessss from v1.3 to v1.4 (under the Marcin's agreement) is
  328.  the first thing I've done in C (excluding K&R's Chapter 1 exercises :-)
  329.  so it may be somewhat strange kind of code. It WORKS, but you should
  330.  look at it if you're not very trusting person... :-)
  331.  
  332.  
  333. --------------------- C O M M E R C I A L    B R E A K --------------------
  334.  
  335.       ______ __   __
  336.      / ____//_/  / /            Find your way to the smallest & slowest
  337.     / /___ __   / /  __  __ ______ _____
  338.    /___  // /  / /  / / / // ____// .__/   BBS in central Europe !!!
  339.   ____/ // /_ / /_ / /_/ // __/_ / /
  340.  /_____//___//___/ \____//_____//_/           WWWW....FFFF....MMMM....HHHH.... support
  341.                                                                  __
  342.                        ____       GlobalNET: 52:4800/6       __ / /
  343.   _+_4_8_ _9_1_ _5_4_0_4_3_1       / __ \        FidoNET: 2:481/22.2     / / \/
  344.                      / / / /_____ ______ ______ _   _      / /   ______
  345.  22224444    HHHHoooouuuurrrrssss    ////    DDDDaaaayyyy     / / / // .__// ____// __  // \_/ \    /_/   / ____/
  346.                    / /_/ // /   / __/_ / __  // /__/ /   __    _\__  /
  347.  1111222200000000-11119999222200000000 bps   /_____//_/   /_____//_/ /_//_/  /_/   /_/   /_____/
  348.  
  349.      Serving on AAAA3333000000000000, 2222CCCCDDDDTTTTVVVVssss, 2222AAAA555500000000++++, 5555 additional CCCCDDDD----RRRROOOOMMMMs on-line
  350.                       For all AAAAmmmmiiiiggggaaaassss, Macs and C64
  351.  
  352.